home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / TANK11.ZIP / SOURCE.ZIP / TANK.C < prev    next >
C/C++ Source or Header  |  1993-01-18  |  3KB  |  117 lines

  1. /*****************************************************************************
  2.  *  Super Tank (C) Copyright 1992 by Kevin P. Dahlhausen   ap096@po.cwru.edu
  3.  *****************************************************************************/
  4.  
  5.  
  6. /* TANK.C contains external data declarations, initialization, and main() */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <conio.h>
  12. #include <dos.h>
  13. #include <bios.h>
  14.  
  15. #include "stk.h"       /* keyboard hanlder */
  16. #include "tankdefs.h"
  17. #include "types.h"
  18. #include "extern.h"
  19. #include "tankpics.h"
  20. #include "joy.h"
  21.  
  22. /*************************************************************************/
  23. /* Global data declarations:
  24.  * -EXTERN.H should reflect any changes here
  25.  * -the function of each variable is documented in EXTERN.H
  26.  */
  27. int    HitX,HitY;
  28. int    NumTanks=DEFNUMTANKS;
  29. int    TankSpeed=DEFTANKSPEED;
  30. int    ShotSpeed=DEFSHOTSPEED;
  31. int    ShotRange=DEFSHOTRANGE;
  32. int   TreesOn=0;
  33. int   GuidedShots=0;
  34. int    newscreen=1;
  35. int    TankInitialX[]={301, 8, 154, 154};   /* initial tank x coordinates */
  36. int    TankInitialY[]={100, 100, 174, 15}; /* initial tank y coordinates */
  37. int    tankColor[]={T0COLOR, T1COLOR, T2COLOR, T3COLOR};
  38. char far *vbuf = (char far *) 0xA0000000;
  39. unsigned char field[FIELDX][FIELDY];
  40. shotrec shotdata[MAXNUMTANKS];
  41. tankRec tank[MAXNUMTANKS];
  42. treeRec tree[NUMTREES];
  43.  
  44. joy_stick joystick;
  45. int JoyStickNumber=-1;
  46. int StickOnTank=-1;
  47.  
  48. /*************************************************************************/
  49. /* local decalarations
  50.  */
  51.  
  52. /* the following are the scan codes for the default keys by tank number */
  53. char UpKeys[]   ={0x48, 0x11, 0x19, 0x15};
  54. char DownKeys[] ={0x50, 0x2c, 0x34, 0x30};
  55. char LeftKeys[] ={0x4b, 0x1e, 0x26, 0x22};
  56. char RightKeys[]={0x4d, 0x20, 0x28, 0x24};
  57. char FireKeys[] ={0x47, 0x10, 0x18, 0x14};
  58.  
  59.  
  60. void init()
  61. /* requires: none
  62.  * ensures:  game variables initialized
  63.  */
  64. {
  65.     int i,i1;
  66.  
  67.     /* initialize the tank records */
  68.     for (i=0;i<MAXNUMTANKS;i++) {
  69.         /* tank pictures */
  70.        for(i1=0;i1<TBMLEN;i1++) tank[i].pic[UP][i1]=TankUpBM[i1]*tankColor[i];
  71.        for(i1=0;i1<TBMLEN;i1++) tank[i].pic[DOWN][i1]=TankDownBM[i1]*tankColor[i];
  72.         for(i1=0;i1<TBMLEN;i1++) tank[i].pic[LEFT][i1]=TankLeftBM[i1]*tankColor[i];
  73.         for(i1=0;i1<TBMLEN;i1++) tank[i].pic[RIGHT][i1]=TankRightBM[i1]*tankColor[i];
  74.         tank[i].dir=UP;
  75.         tank[i].xmove=0;
  76.         tank[i].ymove=0;
  77.         tank[i].score=0;
  78.         tank[i].treeshit=0;
  79.         tank[i].upk=UpKeys[i];
  80.         tank[i].downk=DownKeys[i];
  81.         tank[i].leftk=LeftKeys[i];
  82.         tank[i].rightk=RightKeys[i];
  83.         tank[i].firek=FireKeys[i];
  84.     }
  85. }
  86.  
  87. main(int argc, char *argv[])
  88. {
  89.     int i;
  90.  
  91.     init();
  92.  
  93.     readconfig(); /* read from config file */
  94.     gr_start_kbd_grab();
  95.  
  96.  
  97.     /* main game loop, exits when esacape key pressed */
  98.     while(configmenu()) {
  99.       restart();
  100.         while (!gr_keys[01]) {
  101.             shots();
  102.             dotanks();
  103.            if (newscreen) restart();
  104.         }
  105.         while (kbhit()) getch();
  106.         mode(3);
  107.    }
  108.  
  109.     CursorOn;
  110.    gr_end_kbd_grab();
  111.  
  112.     while(bioskey(1)) bioskey(0);   /* clear the keyboard buffer */
  113.  
  114.     clrscr();
  115.    return(1);
  116.  
  117. }